IF EXISTS (SELECT * FROM dbo.sysobjects WHERE id = object_id('FK_Acao_Partida_Partida') AND OBJECTPROPERTY(id, 'IsForeignKey') = 1)
ALTER TABLE Acao_Partida DROP CONSTRAINT FK_Acao_Partida_Partida
;

IF EXISTS (SELECT * FROM dbo.sysobjects WHERE id = object_id('FK_Campeonato_Jogadores_Campeonato') AND OBJECTPROPERTY(id, 'IsForeignKey') = 1)
ALTER TABLE Campeonato_Jogadores DROP CONSTRAINT FK_Campeonato_Jogadores_Campeonato
;

IF EXISTS (SELECT * FROM dbo.sysobjects WHERE id = object_id('FK_Campeonato_Jogadores_Jogador') AND OBJECTPROPERTY(id, 'IsForeignKey') = 1)
ALTER TABLE Campeonato_Jogadores DROP CONSTRAINT FK_Campeonato_Jogadores_Jogador
;

IF EXISTS (SELECT * FROM dbo.sysobjects WHERE id = object_id('FK_Campeonato_Partidas_Campeonato') AND OBJECTPROPERTY(id, 'IsForeignKey') = 1)
ALTER TABLE Campeonato_Partidas DROP CONSTRAINT FK_Campeonato_Partidas_Campeonato
;

IF EXISTS (SELECT * FROM dbo.sysobjects WHERE id = object_id('FK_Campeonato_Partidas_Partida') AND OBJECTPROPERTY(id, 'IsForeignKey') = 1)
ALTER TABLE Campeonato_Partidas DROP CONSTRAINT FK_Campeonato_Partidas_Partida
;

IF EXISTS (SELECT * FROM dbo.sysobjects WHERE id = object_id('FK_Jogador_Pontuacao') AND OBJECTPROPERTY(id, 'IsForeignKey') = 1)
ALTER TABLE Jogador DROP CONSTRAINT FK_Jogador_Pontuacao
;

IF EXISTS (SELECT * FROM dbo.sysobjects WHERE id = object_id('FK_Cartao_Jogador_Cartao') AND OBJECTPROPERTY(id, 'IsForeignKey') = 1)
ALTER TABLE Jogador_Jog_Virtual DROP CONSTRAINT FK_Cartao_Jogador_Cartao
;

IF EXISTS (SELECT * FROM dbo.sysobjects WHERE id = object_id('FK_Cartao_Jogador_Jogador') AND OBJECTPROPERTY(id, 'IsForeignKey') = 1)
ALTER TABLE Jogador_Jog_Virtual DROP CONSTRAINT FK_Cartao_Jogador_Jogador
;

IF EXISTS (SELECT * FROM dbo.sysobjects WHERE id = object_id('FK_Partida_Jogador1') AND OBJECTPROPERTY(id, 'IsForeignKey') = 1)
ALTER TABLE Partida DROP CONSTRAINT FK_Partida_Jogador1
;

IF EXISTS (SELECT * FROM dbo.sysobjects WHERE id = object_id('FK_Partida_Jogador2') AND OBJECTPROPERTY(id, 'IsForeignKey') = 1)
ALTER TABLE Partida DROP CONSTRAINT FK_Partida_Jogador2
;

IF EXISTS (SELECT * FROM dbo.sysobjects WHERE id = object_id('FK_Cartao_Partida_Cartao2') AND OBJECTPROPERTY(id, 'IsForeignKey') = 1)
ALTER TABLE Partida_Jog_Virtual DROP CONSTRAINT FK_Cartao_Partida_Cartao2
;

IF EXISTS (SELECT * FROM dbo.sysobjects WHERE id = object_id('FK_Cartao_Partida_Partida') AND OBJECTPROPERTY(id, 'IsForeignKey') = 1)
ALTER TABLE Partida_Jog_Virtual DROP CONSTRAINT FK_Cartao_Partida_Partida
;



IF EXISTS (SELECT * FROM dbo.sysobjects WHERE id = object_id('Acao_Partida') AND  OBJECTPROPERTY(id, 'IsUserTable') = 1)
DROP TABLE Acao_Partida
;

IF EXISTS (SELECT * FROM dbo.sysobjects WHERE id = object_id('Campeonato') AND  OBJECTPROPERTY(id, 'IsUserTable') = 1)
DROP TABLE Campeonato
;

IF EXISTS (SELECT * FROM dbo.sysobjects WHERE id = object_id('Campeonato_Jogadores') AND  OBJECTPROPERTY(id, 'IsUserTable') = 1)
DROP TABLE Campeonato_Jogadores
;

IF EXISTS (SELECT * FROM dbo.sysobjects WHERE id = object_id('Campeonato_Partidas') AND  OBJECTPROPERTY(id, 'IsUserTable') = 1)
DROP TABLE Campeonato_Partidas
;

IF EXISTS (SELECT * FROM dbo.sysobjects WHERE id = object_id('Jogador') AND  OBJECTPROPERTY(id, 'IsUserTable') = 1)
DROP TABLE Jogador
;

IF EXISTS (SELECT * FROM dbo.sysobjects WHERE id = object_id('Jogador_Jog_Virtual') AND  OBJECTPROPERTY(id, 'IsUserTable') = 1)
DROP TABLE Jogador_Jog_Virtual
;

IF EXISTS (SELECT * FROM dbo.sysobjects WHERE id = object_id('Jogador_Virtual') AND  OBJECTPROPERTY(id, 'IsUserTable') = 1)
DROP TABLE Jogador_Virtual
;

IF EXISTS (SELECT * FROM dbo.sysobjects WHERE id = object_id('Partida') AND  OBJECTPROPERTY(id, 'IsUserTable') = 1)
DROP TABLE Partida
;

IF EXISTS (SELECT * FROM dbo.sysobjects WHERE id = object_id('Partida_Jog_Virtual') AND  OBJECTPROPERTY(id, 'IsUserTable') = 1)
DROP TABLE Partida_Jog_Virtual
;

IF EXISTS (SELECT * FROM dbo.sysobjects WHERE id = object_id('Pontuacao') AND  OBJECTPROPERTY(id, 'IsUserTable') = 1)
DROP TABLE Pontuacao
;


CREATE TABLE Acao_Partida ( 
	partida_id bigint,
	datahora_acao datetime,
	tipo_acao smallint,
	texto_acao varchar(max)
)
;

CREATE TABLE Campeonato ( 
	campeonato_id int identity(1,1)  NOT NULL,
	nome varchar(100) NOT NULL,
	data_inicio datetime NOT NULL,
	estilo_campeonato smallint NOT NULL,
	data_fim datetime,
	finalizado bit,
	controlar_cartoes bit DEFAULT 0 NOT NULL,
	qtde_rodadas int,
	qtde_times_finalistas smallint,
	qtde_times_rebaixados smallint
)
;

CREATE TABLE Campeonato_Jogadores ( 
	campeonato_id int NOT NULL,
	jogador_id bigint NOT NULL
)
;

CREATE TABLE Campeonato_Partidas ( 
	campeonato_id int NOT NULL,
	partida_id bigint NOT NULL
)
;

CREATE TABLE Jogador ( 
	jogador_id bigint identity(1,1)  NOT NULL,
	nome varchar(100) NOT NULL,
	time_escolhido varchar(100) NOT NULL,
	pontuacao_id bigint
)
;

CREATE TABLE Jogador_Jog_Virtual ( 
	jog_virtual_id bigint NOT NULL,
	jogador_id bigint NOT NULL
)
;

CREATE TABLE Jogador_Virtual ( 
	jog_virtual_id bigint identity(1,1)  NOT NULL,
	nome_jogador varchar(100) NOT NULL,
	total_cartoes_amarelos int DEFAULT 0 NOT NULL,
	total_cartoes_vermelhos int DEFAULT 0 NOT NULL,
	suspenso bit DEFAULT 0 NOT NULL,
	rodada_suspenso int DEFAULT 0 NOT NULL,
	qtde_rodadas_suspenso int DEFAULT 0 NOT NULL,
	total_gols int DEFAULT 0 NOT NULL
)
;

CREATE TABLE Partida ( 
	partida_id bigint identity(1,1)  NOT NULL,
	data_partida datetime NOT NULL,
	jogador1_id bigint NOT NULL,
	jogador2_id bigint NOT NULL,
	rodada int NOT NULL,
	gols_jogador1 int,
	gols_jogador2 int,
	placar_registrado bit DEFAULT 0 NOT NULL
)
;

CREATE TABLE Partida_Jog_Virtual ( 
	partida_id bigint NOT NULL,
	jog_virtual_id bigint NOT NULL,
	cartao_amarelo int NOT NULL,
	expulso bit NOT NULL,
	gols_marcados int
)
;

CREATE TABLE Pontuacao ( 
	pontuacao_id bigint identity(1,1)  NOT NULL,
	pontos int NOT NULL,
	num_vitorias int NOT NULL,
	num_empates int NOT NULL,
	num_derrotas int NOT NULL,
	gols_pro int NOT NULL,
	gols_contra int NOT NULL
)
;


ALTER TABLE Campeonato ADD CONSTRAINT PK_Campeonato 
	PRIMARY KEY CLUSTERED (campeonato_id)
;

ALTER TABLE Campeonato_Jogadores ADD CONSTRAINT PK_Campeonato_Jogadores 
	PRIMARY KEY CLUSTERED (campeonato_id, jogador_id)
;

ALTER TABLE Campeonato_Partidas ADD CONSTRAINT PK_Campeonato_Partidas 
	PRIMARY KEY CLUSTERED (campeonato_id, partida_id)
;

ALTER TABLE Jogador ADD CONSTRAINT PK_Jogador 
	PRIMARY KEY CLUSTERED (jogador_id)
;

ALTER TABLE Jogador_Jog_Virtual ADD CONSTRAINT PK_Cartao_Jogador 
	PRIMARY KEY CLUSTERED (jog_virtual_id, jogador_id)
;

ALTER TABLE Jogador_Virtual ADD CONSTRAINT PK_Cartao 
	PRIMARY KEY CLUSTERED (jog_virtual_id)
;

ALTER TABLE Partida ADD CONSTRAINT PK_Partida 
	PRIMARY KEY CLUSTERED (partida_id)
;

ALTER TABLE Partida_Jog_Virtual ADD CONSTRAINT PK_Cartao_Partida 
	PRIMARY KEY CLUSTERED (partida_id, jog_virtual_id)
;

ALTER TABLE Pontuacao ADD CONSTRAINT PK_Pontuacao 
	PRIMARY KEY CLUSTERED (pontuacao_id)
;



ALTER TABLE Acao_Partida ADD CONSTRAINT FK_Acao_Partida_Partida 
	FOREIGN KEY (partida_id) REFERENCES Partida (partida_id)
;

ALTER TABLE Campeonato_Jogadores ADD CONSTRAINT FK_Campeonato_Jogadores_Campeonato 
	FOREIGN KEY (campeonato_id) REFERENCES Campeonato (campeonato_id)
;

ALTER TABLE Campeonato_Jogadores ADD CONSTRAINT FK_Campeonato_Jogadores_Jogador 
	FOREIGN KEY (jogador_id) REFERENCES Jogador (jogador_id)
;

ALTER TABLE Campeonato_Partidas ADD CONSTRAINT FK_Campeonato_Partidas_Campeonato 
	FOREIGN KEY (campeonato_id) REFERENCES Campeonato (campeonato_id)
;

ALTER TABLE Campeonato_Partidas ADD CONSTRAINT FK_Campeonato_Partidas_Partida 
	FOREIGN KEY (partida_id) REFERENCES Partida (partida_id)
;

ALTER TABLE Jogador ADD CONSTRAINT FK_Jogador_Pontuacao 
	FOREIGN KEY (pontuacao_id) REFERENCES Pontuacao (pontuacao_id)
;

ALTER TABLE Jogador_Jog_Virtual ADD CONSTRAINT FK_Cartao_Jogador_Cartao 
	FOREIGN KEY (jog_virtual_id) REFERENCES Jogador_Virtual (jog_virtual_id)
;

ALTER TABLE Jogador_Jog_Virtual ADD CONSTRAINT FK_Cartao_Jogador_Jogador 
	FOREIGN KEY (jogador_id) REFERENCES Jogador (jogador_id)
;

ALTER TABLE Partida ADD CONSTRAINT FK_Partida_Jogador1 
	FOREIGN KEY (jogador2_id) REFERENCES Jogador (jogador_id)
;

ALTER TABLE Partida ADD CONSTRAINT FK_Partida_Jogador2 
	FOREIGN KEY (jogador1_id) REFERENCES Jogador (jogador_id)
;

ALTER TABLE Partida_Jog_Virtual ADD CONSTRAINT FK_Cartao_Partida_Cartao2 
	FOREIGN KEY (jog_virtual_id) REFERENCES Jogador_Virtual (jog_virtual_id)
;

ALTER TABLE Partida_Jog_Virtual ADD CONSTRAINT FK_Cartao_Partida_Partida 
	FOREIGN KEY (partida_id) REFERENCES Partida (partida_id)
;
